The present invention relates to optical media, and more particularly to syndrome generation in decoding data from an optical medium.
According to a standard in the industry, data from optical media is stored in a rows and columns format. FIG. 1 illustrates the data format for Digital Video Disc (DVD) according to a standard in the industry. As illustrated, the data is stored in a 208 rowsxc3x97172 columns table format. Each intersection of row and column is a byte of the data. The data is read from the DVD by rows. Thus, bytes in row R0 are first read sequentially from columns C0 through C171, then the bytes in row R1 are read sequentially from columns C0 through C171, etc. Typically, six clock cycles are required to read the first byte, and one clock cycle is required to read each subsequent contiguous byte. Reading data in this manner is according to the standard in the industry and is very well known.
Read data is then decoded. Part of the decoding process is error correction, which is well known in the art as the Error Correction Code (ECC) process. The ECC process is performed in rows and columns. In other words, the bytes in column C0 are first corrected. Then the bytes in column C1 are corrected, etc. For each column, the bytes are processed by a standard syndrome generation logic, the result of which is then checked for errors by a syndrome checking process. The syndrome checking process is well known and standard in the art, and thus will not be described in detail here.
However, although the ECC is performed by columns, the data is not read sequentially by columns but by rows. To obtain columns of bytes, a jump must be made from a column""s byte in one row to the column""s byte in another row. Typically, in addition to the six clock cycles required to read the first byte, another six clock cycles are required to jump and read the next byte in the same column. This is in contrast to the one clock cycle required if the bytes were sequential. Thus, with each byte read for ECC, a five clock cycle penalty is incurred.
One conventional method of limiting the clock cycle penalty is to process multiple columns at the same time. To do this, the syndrome generation logic is duplicated, one set for each column. However, the logic requires significant space on the optical drive""s controller. Thus, although some clock cycle penalty is saved, a significant cost in space is incurred.
Accordingly, there exists a need for an improved method and system for multiple column syndrome generation for optical media. The method and system should reduce the clock cycle penalty while also avoiding a space penalty for the controller. The present invention addresses such a need.
The present invention provides a method and system for syndrome generation for data from an optical media. The method includes reading data bytes for a plurality of columns of a row of the data; reading a plurality of partial syndromes from a memory, each of the plurality of partial syndromes corresponding to one of the plurality of columns; updating each of the plurality of partial syndromes with the data byte of the corresponding column; and writing the plurality of updated partial syndromes into the memory. The present invention obtains data bytes for multiple columns at one time. Syndrome generation is then performed for each column, with the partial syndromes for each column stored in a memory. As the data bytes of subsequent rows of data for multiple columns are obtained, the partial syndromes for each column are read from the memory and loaded into a syndrome generation logic, thus updating the partial syndrome for each column. The updated syndromes are written back into the memory. This continues until the syndromes for all of the rows for the multiple columns have been generated. By storing partial syndromes in a memory, multiple sets of syndrome generation logic are not needed to simultaneously process multiple columns of data bytes, thus avoiding a space penalty for the controller. Since multiple columns are read at one time, fewer clock cycles are required to access the data bytes, saving time. Therefore, clock cycle penalties are decreased while also avoiding a space penalty for the controller.